A state machine is a model that includes states and transitions between the various states, the transitions usually occurring as a result of a particular input or change in conditions.
Logic design and analysis often requires the design of state machines. The design and analysis process generally includes modeling binary output variables as functions of binary input variables. For instance, binary output variables representative of the next state of the machine may be modeled as mathematical transforms, or functions, of binary input variables. However, when the number of input variables or the number of logic states is large, conventional state machine design methods result in a large permutation of inputs and states, making the design and testing of the state machine difficult and complex. For example, using some conventional state machine design methods, a state table is generally used to illustrate all possible permutations of states and inputs. In these conventional state machine design methods, a state machine with a variable of m flip-flops and a variable of n inputs would require a state table having 2^(m+n) rows. For example, in one conventional design method, a state machine with 18 inputs and 9 states, implemented using 4 flip flops, would require a state table having 2^(18+4)=4194304 rows. The resulting state machine may be difficult to test and may suffer from erratic, unpredictable operation.
Accordingly, there is a present need for a state machine and a method and system of designing and implementing a state machine that addresses these and other shortcomings of existing systems and methods.